#include<stdio.h>
/**
#define N 8

int main()
{
	int a[8]={41,33,61,82,72,11,25,47},i,minindex;
	for(i=0;i<N-1;i++)
	{
		minindex=i;
		for(int j=i;j<N;j++)
		{
			if (a[minindex]>a[j])
			{
				minindex=j;
			}
		}
		int t=a[i];a[i]=a[minindex];a[minindex]=t;
	}
	for(i=0;i<N;i++)
		printf("%d ",a[i]);
}
如果降序，只需要将min改成max，然后将a[j]<a[min]改成a[j]>a[max]
*/


/*本题目要求读入N个整数，采用简单选择排序法（每轮选最大）进行排序，输出前3轮排序后的结果。
输入格式:

输入不超过100的正整数N和N个整数（空格分隔）。
输出格式:

输出三行，第一行为第一轮排序结果，第二行为第二轮排序结果，第三行为第三轮排序结果。数据间用一个空格分隔。

为简便起见，最后一个元素后也有一个空格。*/
int main()
{
	int n,a[100],t;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(int i=n-1;i>=0;i--)
    {
    	t=0;
    	for(int j=0;j<i;j++)
    	{
    		if(a[t]<a[j])
    		{
    			t=j;
			}
		}
		int m = a[i]; 
		a[i] = a[t];
		a[t] = m;
		if(n-1-i<3)
		{
			for(int j=0;j<n;j++)
				printf("%d ",a[j]);
			printf("\n");
		}
	}
	
	
}